昨天我們建立了一個框架的腳手架,並且能成功的運作內容,看到 Hello World 了。
今天我們試著建立框架的核心部分,並且將框架程式碼和核心部分進行串接。
首先,我們建立一個專案,這邊我使用 reccaval-framework
這個名字。
接著,我們在專案內建立一個 src/Foundation/Application.php
,作為我們的第一個類別,內容如下
<?php
namespace Reccaval\Foundation;
class Application
{
/**
* The Reccaval framework version.
*
* @var string
*/
const VERSION = '0.0.1';
/**
* Get the version number of the application.
*
* @return string
*/
public function version()
{
return static::VERSION;
}
}
然後,我們在專案內建立 composer.json
,這邊可以使用 composer init
這個指令協助建立。建立完成之後的內容如下
{
"name": "recca/reccaval-framework",
"description": "a test project for mimicking laravel/framework",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {
"Reccaval\\": "src/"
}
},
"authors": [
{
"name": "Recca Chao",
"email": "flamerecca711@gmail.com"
}
],
"require": {}
}
這邊要特別注意到 "autoload"
裡面的內容,必須要正確的對應專案的資料夾以及命名空間。
如果出錯的話,會導致引用該套件時,類別無法正確地引入。
接著,我們要將這個專案發佈到 packagist 上面,讓 composer 可以成功的載入這個 library。
首先,我們將這個專案發佈到一個公開的 Github Repo 上面。這邊的範例為 https://github.com/flamerecca/reccaval-framework/
然後,我們幫這個專案加上一個 Tag,標記為 0.0.1
https://github.com/flamerecca/reccaval-framework/releases/tag/0.0.1
接著我們申請一個 https://packagist.org/ 的帳號,並點擊 submit 進到 https://packagist.org/packages/submit ,建立對應的套件
建立完成之後,我們就可以到昨天的測試專案內,透過指令
composer require recca/reccaval-framework:0.0.1
來安裝 reccaval-framework
了。
安裝好之後,我們就可以試著使用我們寫好的框架內容。
我們將原本的 hello.php
改寫如下
<?php
use Reccaval\Foundation\Application;
// Register the Composer autoloader...
require __DIR__.'/../vendor/autoload.php';
echo (new Application)->version();
接著重新執行 docker compose up --build
來載入我們修改後的內容。
接著我們就可以看到畫面上顯示出我們的版本號碼 0.0.1
到這邊,框架的腳手架與框架核心之間的串接就完成了!